package net.zjitc.test;

/**
 * 数组作为参数传递：
 *  数组是引用类型，arr 存的是地址
 * int a 基本类型，存的是具体值
 */
public class ArrayParameter {
    public static void main(String[] args) {
        int a=10,b=20;
        System.out.println("a="+a+", b="+b);
        // 方法重载
        change(a,b);
        // 分析解释原因？
        // 传值：类似于复印件，复印件上做任何修改，原件不会有影响
        System.out.println("a="+a+", b="+b);
        System.out.println("-----------------");
        int[] arr={1,3,5};
        System.out.println("arr[0]="+arr[0]);
        // 方法重载
        change(arr);
        // 分析解释原因？
        // 传地址：在原件基础上修改
        System.out.println("arr[0]="+arr[0]);
    }
    private static void change(int[] arr) {
        arr[0]=100;
    }
    private static void change(int a, int b) {
        a=3;
        b=4;
    }
    // 方法的重载：方法名相同（功能相同），参数列表不一样
    //            参数列表不一样指的是：参数的类型不同或者个数不同
    // 调用：根据传递的参数自动决定调用哪个方法
    private static void change(int c) {
        c=3;
    }
}
